You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

36 lines
959 B

import { dbGlobal } from "drizzle-pkg/lib/db";
import { users, sessions } from "drizzle-pkg/lib/schema/auth";
import { eq } from "drizzle-orm";
import log4js from "logger";
const logger = log4js.getLogger("USERS");
export default defineWrappedResponseHandler(async (event) => {
const id = Number(event.context.params?.id);
if (!id || isNaN(id)) {
throw createError({
statusCode: 400,
statusMessage: "无效的用户ID",
});
}
const [user] = await dbGlobal
.select({ id: users.id, username: users.username })
.from(users)
.where(eq(users.id, id));
if (!user) {
throw createError({
statusCode: 404,
statusMessage: "用户不存在",
});
}
await dbGlobal.delete(sessions).where(eq(sessions.userId, id));
await dbGlobal.delete(users).where(eq(users.id, id));
logger.info("user deleted by admin: %s (id: %d)", user.username, id);
return R.success({ message: "用户已删除" });
});